The present invention generally pertains to the field of computer networking. More particularly, the present invention is related to multicast packet filtering in a peripheral component environment.
Computers have become an integral tool used in a wide variety of different applications, such as in finance and commercial transactions, computer-aided design and manufacturing, health-care, telecommunication, education, etc. Computers are finding new applications as a result of advances in hardware technology and rapid development in software technology. Furthermore, a computer system""s functionality is dramatically enhanced by coupling stand-alone computers together to form a computer network. In a computer network, users may readily exchange files, share information stored on a common database, pool resources, and communicate via e-mail and via video teleconferencing.
One popular type of computer network is known as a local area network (LAN). LANs connect multiple computers together such that the users of the computers can access the same information and share data. Typically, in order to be connected to a LAN, a general purpose computer requires an expansion board generally known as a network interface card (NIC). Essentially, the NIC works with the operating system and central processing unit (CPU) of the host computer to control the flow of information over the LAN. Some NICs may also be used to connect a computer to the Internet.
The NIC, like other hardware devices, requires a device driver which. controls the physical functions of the NIC and coordinates data transfers between the NIC and the host operating system. An industry standard for interfacing between the device driver and the host operating system is known as the Network Device Interface Specification, or NDIS, which is developed by Microsoft Corporation of Redmond, Washington. The operating system layer implementing the NDIS interface is generally known as an NDIS wrapper. Functionally, the NDIS wrapper arbitrates the control of the device driver between various is application programs and provides temporary storage for the data packets.
Multicasting of packets in well known in the field of computer networking. A multicast packet is packet which is intended for receipt by more than one recipient. However, multicast packets, and the receipt thereof, can have a deleterious effect on many computer systems. Specifically, as the number of multicast packets continually increases, recipients (e.g. client computer systems) are forced to spend more and more time examining received multicast packets and determining whether or not they are wanted. That is, even when not requested, received multicast packets require intervention by the recipient. Thus, the recipient is often forced to store the multicast packet; examine the multicast packet; and the discard the multicast packet (when the multicast packet is unwanted) or keep the multicast packet (when the multicast packet is desired). Hence, considerable CPU (central processing unit) utilization can be wasted by receiving and handling unwanted multicast packets. Such wasted CPU utilization is especially prevalent in some conventional peripheral component environments. More specifically in some conventional peripheral component environments, the peripheral component is forced to frequently interrupt the host computer to forward received multicast packets. Therefore, as network speeds increase (e.g. Gigabit Ethernet and the like), peripheral component interruptions of the host computer, due to received multicast packets, become a significant source CPU drain.
In one attempt to reduce the CPU burden imposed by multicast packets, a filter is employed. In one such approach, referred to as a xe2x80x9cperfectxe2x80x9d filter system, the host computer (e.g. a driver operating thereon) constructs a list of desired destination addresses corresponding to respective multicast packets which the host computer wants to receive. Whenever a multicast packet is received, its destination address is compared to the previously constructed list of desired destination addresses. If the destination address of the received multicast packet is contained the list of desired destination addresses, the multicast packet is kept. On the other hand, if the destination address of the received multicast packet is not contained in the list of desired destination addresses, the multicast packet is discarded. Thus, by requiring the host computer to list each and every desired destination address, such prior art methods require extensive host computer intervention.
There are additional substantial drawbacks to conventional xe2x80x9cperfectxe2x80x9d filtering methods. As one example, there are 247 potential destination addresses for multicast packets. Therefore, storing all desired multicast addresses potentially consumes a burdensome amount of storage space. That is, constructing a table containing as many as 247 desired destination addresses can exhaust an inordinate amount of valuable memory space.
Thus, a need exists for a method and system for filtering multicast packets wherein the method and system does not require extensive host computer intervention. Still another need exists for a method and system for filtering multicast packets wherein the method and system meets the above-listed need and wherein the method and system does not consume burdensome amounts of storage space. Yet another need exists for a method and system for filtering multicast packets wherein the method and system meets the above-listed needs and wherein the method and system does not require extensive modifications to underlying peripheral component driver protocols.
The present invention provides a method and system for filtering multicast packets wherein the method and system does not require extensive host computer intervention. The present invention further provides a method and system for filtering multicast packets wherein the method and system achieves the above-listed accomplishment and wherein the method and system does not consume burdensome amounts of storage space. The present invention also provides a method and system for filtering multicast packets wherein the method and system achieves the above-listed accomplishments and wherein the method and system does not require extensive modifications to underlying peripheral component driver protocols.
Specifically, in one embodiment, the present invention uses a peripheral component driver to store in memory a selected hash values corresponding to desired multicast packets. In one embodiment, the peripheral component driver operates on a host computer to which a peripheral component is coupled. Next, when the peripheral component receives an incoming multicast packet, the present invention uses a hash value generator disposed on the peripheral component to determine a hash value for the received multicast packet. The present embodiment then compares the hash value for the received multicast packet with the selected hash values stored in memory. Provided the hash value for the received multicast packet does not match any of the selected hash values stored in the memory, the present embodiment discards the received multicast packet without interrupting the host computer. In so doing, the present embodiment effectively filters multicast packets without requiring constant intervention by the CPU (central processing unit) of the host computer.
In another embodiment, the present invention includes the features of the above-listed embodiment and further recites that the hash value generator produces a 10 bit hash value. In so doing, the present embodiment is able to generate up to 1024 hash values which, in turn, can be compared to 1024 selected hash values corresponding to at least 1024 desired multicast packets.
These and other advantages of the present invention will no doubt become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures.